package com.universest.swordholder.ui.activity

import android.os.Bundle
import android.widget.Toast
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Scaffold
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import com.universest.swordholder.ui.theme.SwordHolderTheme

/**
 * BaseActivity是一个抽象的基类活动，为所有继承它的活动提供统一的主题、布局结构和基础功能。
 * 该类自动处理Compose UI的设置、边缘到边缘显示的启用以及Scaffold布局的配置。
 */
abstract class BaseActivity : ComponentActivity() {

    /**
     * 活动创建时的回调方法，负责初始化UI和设置基础布局结构。
     * 启用边缘到边缘显示模式，并设置包含Scaffold的内容屏幕。
     *
     * @param savedInstanceState 用于恢复状态的Bundle对象，可能为null
     */
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // 启用边缘到边缘显示模式
        enableEdgeToEdge()
        // 设置Compose UI内容
        setContent {
            SwordHolderTheme {
                // 使用Scaffold提供标准的Material Design布局结构
                Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
                    // 调用抽象方法来填充具体的内容屏幕
                    ActivityContentScreen(modifier = Modifier
                        .padding(innerPadding))
                }
            }
        }
    }

    /**
     * 抽象的可组合函数，子类必须实现此方法来提供具体的活动内容UI。
     *
     * @param modifier 用于修饰UI组件的Modifier对象
     */
    @Composable
    abstract fun ActivityContentScreen(modifier: Modifier)

    /**
     * 在主线程中显示Toast消息的便捷方法。
     *
     * @param message 要显示的Toast消息文本
     */
    fun toast(message: String){
        runOnUiThread {
            Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
        }
    }
}
